blob: bd9ce19d2448a5240fd9b4143e2d92115610e008 [file] [log] [blame]
apr_file_t is an abstraction that covers the whole range of what can be
a file (including pipes etc.) and how it can be used (multi-threading,
overlapped I/O etc.). This limits the efficiency of its implementation.
Design goals for svn_file_t:
* Build upon non-buffered apr_file_t to get the platform support without
any of the buffer management overhead.
* Use it for "real files" with at most one writer process only. This
allows for efficient file length and EOF detection.
* Map an unlimited number of instances to a limited number of file handles.
Handles to same file may be shared (depending on flags) and non-locking
file handles may be closed temporarily.
* Use (up to) two buffers instead of one per file to allow for efficient
traversal in both directions.
* Internalize seek() operations, i.e. don't pass them on to the OS.
The current code is completely untested and does not fully comply with
the design goals listed above.