Preklad a linkovanie zdrojovych kodov
O zautomatizovany preklad zdrojovych kodov sa stara utilita
make. V reale to znamena ze staci v danom pracovnom adresari zavolat prikaz make a uskutocni sa preklad danej casti systemu. Utilita make ako implicitny konfiguracny subor berie
Makefile v aktualnom pracovnom adresari. V pripade prekladu projektu ipfix analyzera je umoznena kompilacia kazdeho podsystemu zvlast pricom ako poslednym krokom je zlinkovanie tychto objektovych kodov do spustitelneho suboru. Co je v konecnom pripade binarka projektu.
Pohlad na system z pohladu adresarovej struktury so subsystemami je zobrazeny na obrazku.
Pri volani utility make v koreni adresarovej struktury projektu sa vola explicitne utilita pre kazdy susystem. Jednotlive moduly sa nasledne zlinkuju s kniznicami ktore projek vyzaduje pre svoj chod.
Vyhody takto oddeleneho prekladu spocivaju v kompilacii len tych casti systemu, ktore boli zmenene. Nasledujuce prikazy sluzia na prelozenie projektu a na vycistenie projektu. Prikazy musi byt spustane v korenovom adresary projektu :
- root@qos-dev > cd {uplna cesta k projektu} - presun na korenovy adresar projektu
- root@qos-dev > make - vytvorenie spustitelneho suboru
- root@qos-dev > make clean - zmazanie objektovych modulov a binarky systemu
Implementacia CUI
momentalne sa pracuje
Cele uzivatelske rozhranie je zamerne izolovane od systemu. Zabezpecene to je rozhranim
IUi (
InterfaceUserInterface?) ktore predpisuje triedam, ktore vznikli polymorficky z tohto rozhrania implementovat metody potrebne pre riadenie vseobeneho uzivatelskeho rozhrania. Pojem rozhranie (interface) je v cisto objektovo-orientovanych jazykoch na trochu vyssej urovni ako v ponati jazyka c++. Interface implementovane v jazyku c++ je vlastne abstraktna trieda s
cisto virtualnymi metodami. Cisto virtualne metody su metody bez implementacie a sluzia iba ako informator o existencii danej metody v odvodenych triedach. Synonymum v cisto objektovo-orientovanych jazykoch k pojmu cisto virtualna medota je pojem abstraktna metoda. Taketo oddelenie subsystemu zabezpecuje v buducnosti jeho implementaciu napriklad pre graficke rozhranie GUI. V zdrojovych kodoch na urovni preprocesora je zabezpecena "cesta" ak by sa planovalo taketo rozsirenie.
Pri implementacii CUI sa podarilo odhalit zopar nedostatkov ktore objektovy navrh nezohladnoval a ani nepredpokladal. Prvym nedostatkom bolo spracovanie vstupu z klavesnice. Pristup ze jedno okno spravuje cely vstup a podla stlaceneho klavesu vykonava akciu nestacil. Problemom bolo to ze okna o sebe nevedeli, preto bolo potrebne izolovat takuto funkcionlitu, ponechat ju vo vlakne a posunut ju na uroven jadra CUI systemu. V konecnom dosledku je to implementovane ako obojsmerna asociacia medzi refresherom (CRefresh) a cui subsystemom s moznostou volat verejne metody. Okna takuto moznost nemaju.
Druhym, ale zakernejsim odhalenym nedostatkom bola nestabilita CUI systemu pri vykreslovani okien. Sposobene to bolo tym ze curese ako aj ncurses nemaju osetreny paralelny pristup ku vykreslovacej metode. Tym ze kazde okno je vykonavane v samostatnom vlakne a pristupuje samo k takejto vykreslovacej metode malo za nasledok zrutenie celeho CUI subsystemu co niekedy viedlo az ku zruteniu celej aplikacie.
Vzhlad CUI pri nemennej velkosti okna, az na vykreslovanie obsahu neovplivnuju takmer ziadne faktory. Problem nastava ak sa zmeni velkost terminalu (myslene grafickej reprezentacie shell interpreta) a tym padom aj pomer stran a rozlozenia okien. Prirodzene sa takato uloha moze posunut na objekt, ktory bude zo specializovanej triedy a bude mat na starosti priatelne rozlozenie okien. V pripade analyzera sa tato uloha zveruje metode na urovni Cui systemu. Je to aj koli tomu, ze zmena velkosti zobrazovanej plochy v pripade iba cisto textoveho vystupu, bez podpory Xservera nebude mozna (co moze by vo vacsine pripadov prave jedine vyuzitie analyzera) a v pripade pritomnosti Xservera to nebude caste. Tym je povedane ze implementacia takejto funkcionality nie je majoritna, ale skor len uzivatelsky prijemnejsim doplnkom.
Implementacia IPC
v priprave