Everything after the hardware layer is a data. A component, which uses the data, should understand it. But usually there's too much noise for the component and we can use filters to squeeze just what the component needs. Then the component can understand only filtered data and it's developer can concentrate on the data usage logic instead of data extraction algorithms. It gives us the opportunity to create a system of filters interconnected in a manner that is most useful for our goal. Below is the hardware layer with it's raw bytes. Above are our components, that implement actual application logic. Filters are both - sources and consumers of the data.Brendan wrote:I typically have 3 things:...
- VFS
- File systems
- Storage drivers
a storage device is mostly a file
...
A file system is something that mounts a file.
...
You can have multiple nested file systems.
An example of it.
Code: Select all
HDD driver -> bytes ->
-> partition filter -> partitions + bytes (content) ->
-> FAT32 filter -> files + directories + bytes (content) ->
-> GIF filter -> meta-data, image properties, ARGB data
or
-> NTFS filter -> files + directories + bytes (content) ->
-> stream tokenizer filter -> tokens ->
-> C++ parser filter -> AST
or
-> XML parser filter -> nodes