Re: [Tuxcmd-dev-vfs] Koncepce VFS - cast 2. round II.
Status: Beta
Brought to you by:
tbzatek
From: Tomas B. <sou...@bz...> - 2004-03-16 19:37:09
|
On Tue, 2004-03-16 at 09:10, Radek Cervinka wrote: > mi se to libi az na : >=20 > > capVFS_Multiple=3D32; //support multiple files > co to je? > jak plugin oznaci ze neumi pohybovani ve streamu? to ja nevim co to je, tos tam mel ty ;) Ty capabilities by to jeste chtelo predelat, podle toho, jake funkce budeme mit v API (asi to udelame az nakonec). Jedno cislo z toho by taky melo oznacovat, jestli umi cist primo ze streamu... > Vsude chybi volaci konvence cdecl; jo :) ale to az nakonec > a jeste aby vsechny funkce zacinaly VFS > takze=20 >=20 > > function FileExists(g:TVFSGlobs; const FileName: PChar; const Use= _lstat: LongBool =3D False): LongBool;> function VFSFileExists(g:TVFS= Globs; const FileName: PChar; const Use_lstat: LongBool =3D False): LongB= ool; souhlas > > function ChangeTimes(g:TVFSGlobs; APath: PChar; mtime, atime: Lon= gint):TVFSResult; >=20 > > // zmeni casy u souboru (ctime se vetsinou nepouziva) > ale neznamena ze tam v rozhrani nebude no pri listovani ctime samozrejme je, nevim jestli to ma nejaky vyznam (asi jo, pro komplexnost bysme to tam asi meli dat). takze: function VFSChangeTimes(g:TVFSGlobs; APath: PChar; mtime, atime, ctime: L= ongint):TVFSResult; > > function GetFSID(g:TVFSGlobs; const APath: PChar): Int64; > > // vrati nejake unikatni cislo FS, ktere identifikuje, ze soubor se n= achazi na urcitem FS > no nevim hmmm tohle ma vyznam spis na lokalu ve strome /, mozna by to melo jeste smysl na SMB (ale tim si opravdu nejsem jist). Je mozno vyhodit pokud se nenalezne zadny plugin ktereho by se to tykalo ;-) Pouzivam to k identifikaci stejneho FS pri presouvani souboru (mezi ruznyma FS se musi prvni zkopirovat a smazat). > > function GetFSLabel(g:TVFSGlobs; const APath: PChar): PChar; > > // zase plati stejna poznamka jako u GetFileSystemSize > taky nevim Toto je asi stejny pripad jako predesla funkce - patrne to nebude zadny plugin pouzivat (maximalne zase SMB pri konexi na windows disk). > to by se delalo asi pres blokove operace nebo pres mmap (coz by bylo le= psi). > Jeden plugin by to namapoval do pameti a druhemu by se predal pointer n= a pamet a delka no... nejdriv asi budu muset detailne pochopit jak vubec mmap pracuje. Pouziti mmap z libc je mne jasne ale vazne nevim jak by se to uzivatelsky implementovalo. Predpokladam ze tam bude nejaky callback ze zdrojoveho pluginu pokud nejaky proces (cilovy plugin) bude chctit cist nejaky blok z pameti - tak callback funkce se pak postara o dekompresi dat (aspon tak to chapu). > =20 > > // DirRec.DateTime :=3D EncodeDate (1970, 1, 1) + (ExtractNumber (@H= eader.MTime, 12) / 86400.0); > jo to ExtractNumber je tam navic (to byla takova suport rutina): > EncodeDate (1970, 1, 1) + MTime / 86400.0); hmmm ja stejne pracuju s unixovym formatem (i interne v aplikaci)... To to budem muset v kazdem pluginu normalizovat... > > function VFSList(g:TVFSGlobs; const sDir:String; iItemID:Integer;= var VFSItem:TVFSItem):TVFSResult; > > // vylistuje seznam souboru v urcite ceste > ja si tady tim nejsem moc jist (a to jsem to vymyslel) > Lepsi byl asi sekvencni pristup jako FindFirst, FindNext, FindClose no... v nekterych pripadech to pocitadlo stejne bude muset byt interne v pluginu, v nektrerych je zase lepsi kdyz se to bude sypat postupne (FTP). Udelal bych nejakou funkci, ktera by vracela pointer na polozky nebo nil pokud bude konec seznamu. Pouziti funkci Findxxxx by celkem vyhovovalo. >=20 > > function VFSFileInfo(g:TVFSGlobs; AFileName: PChar; var VFSItem:P= VFSItem):TVFSResult; > > // vrati strukturu s informacema jenom o tom jednom souboru > to bych sem nedaval zbytecne to bude kompikovat plugin bude, ale je to docela nutne potrebuju k chodu programu. Pouzivam to hlavne ke zjisteni okamziteho stavu souboru - pokud potrebuju pracovat jen s jednim - jinak by se musel vylistovat znovu cely adresar a bylo by to neefektivni. Stejne ale bude potreba v nekterych pripadech projit=20 Je mi jasne ze nektere moje navrhy funkci docela zesloziti implementaci pluginu, ale na druhou stranu zrychli a zefektivni vyslednou aplikaci - navic proc to neimplementovat kdyz to nektere pluginy budou umet bez potizi (tyka se to i nekterych druhu archivu).=20 ---- Tom=E1=B9 B=BEatek |