We could refactor the file
classes into simple io classes and readers/writers similar to .Net
BufferedFile
would become a buffered_reader
and separate buffered_writer
which are both simpler to implement because of the missing read-write-access.
Additionally we could write a buffered_reader_writer
which would have read-write-access.
Maybe we should also add an abstract_file
as base class providing the interface.
Something like a memory_file
would only be the storage. We could even think of adjusting raw_storage
for this task.
We could also redesign the functionality of a temporary_file
which is problematic ATM (at least with Linux).
This would also open the way for "stacking" readers, like a zlib_reader
, or network sources like an ssh_file
or something like this.
Maybe, we could even make the memmapped_file
beneficial again (i.e. allowing for request mapping "ahead" before reading).
I was also thinking about reader classes, but did not yet come to a conclusion whether it is a good idea to have the whole ".NET stack" of file, stream, reader. Having this would be nice wrt. the network part, because one could think of a reader reading from stream sockets, too.