Re: [Tuxcmd-dev-vfs] Koncepce VFS - cast 2.
Status: Beta
Brought to you by:
tbzatek
From: Tomas B. <sou...@bz...> - 2004-02-21 17:11:56
|
On Sat, 2004-02-21 at 16:49, Radek Cervinka wrote: > No jdes na to trochu zhurta. No vsak jo, jenom jsem to sepsal jake funkce potrebuju... > Jen nejdulezitejsi informace: > 1) > **** > Kopirovani bude stylem > a) rekni modulu ze chces soubor a kam ho chces (z kama apod) > nebo > b) chci prvnich 4kb ze souboru, pak dalsi atd. >=20 > Podle mne se priklanis k za b). Proc? Podle mne je to zalezitosti > modulu. Nehlede ze nektere soubory (virtualni) nemusi mit > descriptory atd. > Fakt si myslim za trochu abstrakce nezaskodi. Nac to tak pitvat? Hm... ja mam v programu v podstate obe dve koncepce, ale pro kopirovani pouzivam a). Proto ta implementace sendfile, coz je na lokalnim FS volani libc. Nechtel bych, aby se soubor zkopiroval cely na jedno volani funkce, mel by se taky nekde updatnou nejaky progress bar. Sendfile taky pracuje navic po blocich. Ty funkce co tam byly (read, write, seek, open, close) tam nejsou kvuli kopirovani, ale pro prime cteni dat (nepravidelne; random access). Napr. i pro interni prohlizec by se to dalo pouzit. Dalsi problem vidim v tom, pokud se bude kopirovat z jednoho pluginu do druhyho. V takovym pripade musi zdrojovy plugin dekodovat data, vratit ukazatel na pamet s urcitym blokem dat a pak cilovy plugin by mel ty data enkodovat a zapsat podle sveho. Jinak to asi nepude (doufam). >=20 > 2) > **** >=20 > vis proc jsem tam mel napr. zde: > TVFSClose =3Dfunction (g:TVFSGlobs):TVFSResult;cdecl; > to g? > aby to bylo thread safe. Hlavni program zaalokoval pocet > byte, ktere si modul zazadal. Toto se nasledne predavalo > funkcim. > Tim padem bych mohl modul zavest vicekrat (treba pro vice vlaken) > a nemusel se bat ze si navzajem prepisou data (jelikoz data se tim pade= m=20 > nadileji). > Jelikoz modul (jako CODE) je v pameti zaveden jen jednou > a sdili globalni promenne pro vsechny instance (s tim nic nenadelas) > to je zalezitosti jadra. Teda az do dnesniho dne jsem si tim byl jist. > Jiste mne presvedcis o opaku :). No vidis, s timhle jsem vubec nepocital... Ted uz mi je jasnejsi ta tvoje struktura. Tohle je samozrejme potreba. >=20 > No a modul potrebuje mit nejake globalni data (teda mozna ne > jak se divam ze predavas i descriptory, no ale > sem tam se neco zhodi, treba pro list). Descriptory nebo neco takoveho budou asi potreba, pokud si budes prohlizet treba dva soubory zaraz z jednoho archivu. > function VFSListBegin(APath: PChar; var VFSItem:PVFSItem):TVFSResult= ; > // pretoci pozici listingu na prvni soubor - rekne se tim ze se zacina = vypis >=20 > a jak si to zapamatuji ? Kdyz nemuzu mit globalni promenne? Nijak. Pomoci globalni promenne :) > > function VFSRun(const sName:String):TVFSResult; >=20 > no treba jsem mel pro nektere moduly i virtualni soubory > (treba pro RPM, kde jich bylo nekolik a mezi nimi i > spustitelny install a unistall:), > no a ono se hodi vubec nekdy treba spustit neco z archivu > (pokud to ma clovek asociovane)) Spoustet primo nejake aplikace bez predchoziho ulozeni na disk asi nejde (nebo mozna jo, ale nevim o tom), Total Commander to taky dela tak, ze si prvni rozbali ten soubor (prip. cely archiv) nekam do tmp a pak to pusti. Vpodstate staci operace kopirovani, spusteni si uz ohlida filemanager (aspon tak to mam teda namysleno), takze neni potreba zadne funkce VFSRun. > > function VFSList(const sDir:String; iItemID:Integer; var VFSItem:= TVFSItem ):TVFSResult; >=20 > no to je kombinace tech tvych tri volani v jednom OK a to iItemID je tam na co? > > function VFSRmDir(const sDirName:PChar):TVFSResult; > k tomu se jeste vratim, ted musim jit rezat drevo. Hodne stesti a bacha na ruky! ;D > > function VFSCopyOut(const sSrcName, sDstName:String):TVFSResult; > viz bod 1a > > function VFSCopyIn(const sSrcName, sDstName:String):TVFSResult; >=20 > viz bod 1b > >=20 > >=20 > >=20 > > noooo..... je toho dost a nebude to zase tak lehke implementovat jak = se=20 > > tak divam... > no to teda asi ne :) >=20 > VFS by melo byt o abstrakci. Jinak se z toho zeserem. Kvuli tomu je to potreba dukladne promyslet... > Radek >=20 ---- Tom=E1=B9 B=BEatek |