Autor Beitrag
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 20.08.06 18:07 
Hi,

ich arbeite derzeit an einem Virtuellen Dateisystem, in dem man über Mountpoints (einbinden von Quelldaten) und Data Handlers (Datenkonvertierung) sich den Zugriff auf Dateien vereinfachen können soll.

Die Struktur des VFS ist dabei in gewissem Sinne dem System von Unix nachempfunden, d.h. man kann sich die Daten an die Stellen legen, wo man sie hin haben möchte. Das VFS könnte daher z.B. in etwa folgende Struktur haben:

ausblenden volle Höhe Beispiel-Datenfluss-Struktur für die Objekte im VFS:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
+------------------+
|vfs:/ (D-V)       |
++-----------------+
 |
 | +------------------+
 +-|vfs:/app (D-V)    |
 | +------------------+
 | +------------------+
 +-|vfs:/data (D-V)   |
 | +------------------+
 | +------------------+
 +-|vfs:/mnt (D-V)    |
   ++-----------------+
    |
    | +------------------+             /-----------------------\
    +-|vfs:/mnt/dir (D--)|<------------|win:C:/data (D--)      |
    | ++-----------------+             \-----------------------/
    |  |
    |  | +------------------------+    /-----------------------\
    |  +-|vfs:/mnt/dir/file1 (-F-)|<---|win:C:/data/file1 (-F-)|
    |  | +------------------------+    \-----------------------/
    |  | +------------------------+    /-----------------------\
    |  +-|vfs:/mnt/dir/file2 (-F-)|<---|win:C:/data/file2 (-F-)|
    |    +------------------------+    \-----------------------/
    |
    | +------------------+             /-----------------------\
    +-|vfs:/mnt/arc (D--)|<------------|win:C:/archives (D--)  |
      ++-----------------+             \-----------------------/
       |
       | +------------------------+    /---------------------------\
       +-|vfs:/mnt/arc/a.tar (DF-)|<---|win:C:/archives/a.tar (-F-)|
         ++---------------------+-+    \---------------------------/
          |                     `-------------------------------------------.
          | +-----------------------------+            .------------------. |
          +-|vfs:/mnt/arc/a.tar/\TAR (D-V)|<-----------|(tar):/           |<+
            ++----------------------------+            `------------------' |
             |                                                              |
             | +----------------------------------+    .------------------. |
             +-|vfs:/mnt/arc/a.tar/\TAR/file (-FV)|<---|(tar):/file       |<+
             | +----------------------------------+    `------------------' |
             | +----------------------------------+    .------------------. |
             +-|vfs:/mnt/arc/a.tar/\TAR/dir (D-V) |<---|(tar):/dir        |<+
               +----------------------------------+    `------------------'


Das System besitzt nun zwei Teile:

  1. Datenquellen:
    Diese liefern die Daten und werden über ein Paar von Protokoll (z.B. vfs) und Resourcenname (z.B. /mnt/dir/file1) angesprochen.
  2. Datenkonverter:
    Diese wandeln die Daten eines Quellobjektes (z.B. vfs:/mnt/arc/a.tar) in entweder einen anderen Datenstrom um (z.B. dekomprimieren, entschlüsseln) und\oder Stellen die Datenquelle als "virtuelle" Teildaten (z.B. Dateien in einer Archiv-Datei) dar.


Nun bin ich inzwischen soweit, dass ich ohne Probleme den ersten Teil realisiert hab (d.h. ich kann problemlos Dateien von Platte oder anderen Quellen lesen), komme aber derzeit bei dem zweiten Punkt nicht wirklich weiter, da ich denke, dass sich in meinem jetzigen Source ein Struktur-Fehler eingeschlichen hat.

Wer den aktuellen Source brauch, findet diesen hier in den Dateien mit OVFS*.pas am Anfang des Namens (insbesondere OVFSManager.pas, OVFSDataSrc*.pas und OVFSProtocol*.pas).

Meine Frage wär nun, wie ich am einfachsten die Behandlung von z.B. Archiv-Dateien realisieren kann, UND ob es ggf. möglich ist, die Schnittstellen für Datenquellen und Datenkonverter zusammenzulegen?

TIA,
BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
BenBE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 28.01.09 18:30 
Da ich (bei Gelegenheit) das VFS noch einmal wesentlich überarbeiten wollte, wär ich an ein paar Hinweisen für eine praktikablere Lösung interessiert. TIA.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.