Details
-
Sub-task
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
None
-
None
-
None
Description
FSFileHandle abstracts out low level interaction with the OS and file system.
Some form of memory map support is required: mmap() on unixen, and
CreateFileMapping()/MapViewOfFile() on Windows.
Only atomic, positional reads are supported, using 64-bit pread() on unixen,
and ReadFile() with an OVERLAPPED structure on Windows.
Multiple InStreams may share a single read-only FSFileHandle, because
FSFH_Read() does not change file position or other state in the underlying
OS-specific file object. Theoretically, operating multiple InStreams in
different threads against a single shared FileHandle will also work – which
is crucial for threadsafe compound files. Thread safety is as yet untested,
though, since Lucy's Perl bindings are single-threaded.