Pyrogenesis  trunk
Public Member Functions | List of all members
IVFS Struct Referenceabstract

#include <vfs.h>

Inheritance diagram for IVFS:
Inheritance graph
[legend]

Public Member Functions

virtual ~IVFS ()
 
virtual Status Mount (const VfsPath &mountPoint, const OsPath &path, size_t flags=0, size_t priority=0)=0
 mount a directory into the VFS. More...
 
virtual Status GetFileInfo (const VfsPath &pathname, CFileInfo *pfileInfo) const =0
 Retrieve information about a file (similar to POSIX stat). More...
 
virtual Status GetFilePriority (const VfsPath &pathname, size_t *ppriority) const =0
 Retrieve mount priority for a file. More...
 
virtual Status GetDirectoryEntries (const VfsPath &path, CFileInfos *fileInfos, DirectoryNames *subdirectoryNames) const =0
 Retrieve lists of all files and subdirectories in a directory. More...
 
virtual Status CreateFile (const VfsPath &pathname, const shared_ptr< u8 > &fileContents, size_t size)=0
 Create a file with the given contents. More...
 
virtual Status ReplaceFile (const VfsPath &pathname, const shared_ptr< u8 > &fileContents, size_t size)=0
 Replace a file with the given contents. More...
 
virtual Status LoadFile (const VfsPath &pathname, shared_ptr< u8 > &fileContents, size_t &size)=0
 Read an entire file into memory. More...
 
virtual std::wstring TextRepresentation () const =0
 
virtual Status GetRealPath (const VfsPath &pathname, OsPath &realPathname)=0
 retrieve the real (POSIX) pathname underlying a VFS file. More...
 
virtual Status GetDirectoryRealPath (const VfsPath &pathname, OsPath &realPathname)=0
 retrieve the real (POSIX) pathname underlying a VFS directory. More...
 
virtual Status GetVirtualPath (const OsPath &realPathname, VfsPath &pathname)=0
 retrieve the VFS pathname that corresponds to a real file. More...
 
virtual Status RemoveFile (const VfsPath &pathname)=0
 remove file from the virtual directory listing and evict its data from the cache. More...
 
virtual Status RepopulateDirectory (const VfsPath &path)=0
 request the directory be re-populated when it is next accessed. More...
 
virtual void Clear ()=0
 empty the contents of the filesystem. More...
 

Constructor & Destructor Documentation

virtual IVFS::~IVFS ( )
inlinevirtual

Member Function Documentation

virtual void IVFS::Clear ( )
pure virtual

empty the contents of the filesystem.

this is typically only necessary when changing the set of mounted directories, e.g. when switching mods. NB: open files are not affected.

Implemented in VFS.

virtual Status IVFS::CreateFile ( const VfsPath pathname,
const shared_ptr< u8 > &  fileContents,
size_t  size 
)
pure virtual

Create a file with the given contents.

Parameters
pathname
fileContents
size[bytes] of the contents, will match that of the file.
Returns
Status.

rationale: disallowing partial writes simplifies file cache coherency (we need only invalidate cached data when closing a newly written file).

Implemented in VFS.

virtual Status IVFS::GetDirectoryEntries ( const VfsPath path,
CFileInfos fileInfos,
DirectoryNames subdirectoryNames 
) const
pure virtual

Retrieve lists of all files and subdirectories in a directory.

Returns
Status.

Rationale:

  • this interface avoids having to lock the directory while an iterator is extant.
  • we cannot efficiently provide routines for returning files and subdirectories separately due to the underlying POSIX interface.

Implemented in VFS.

virtual Status IVFS::GetDirectoryRealPath ( const VfsPath pathname,
OsPath realPathname 
)
pure virtual

retrieve the real (POSIX) pathname underlying a VFS directory.

this is useful for passing paths to external libraries.

Implemented in VFS.

virtual Status IVFS::GetFileInfo ( const VfsPath pathname,
CFileInfo pfileInfo 
) const
pure virtual

Retrieve information about a file (similar to POSIX stat).

Parameters
pathname
pfileInforeceives information about the file. Passing NULL suppresses warnings if the file doesn't exist.
Returns
Status.

Implemented in VFS.

virtual Status IVFS::GetFilePriority ( const VfsPath pathname,
size_t *  ppriority 
) const
pure virtual

Retrieve mount priority for a file.

Parameters
pathname
ppriorityreceives priority value, if the file can be found.
Returns
Status.

Implemented in VFS.

virtual Status IVFS::GetRealPath ( const VfsPath pathname,
OsPath realPathname 
)
pure virtual

retrieve the real (POSIX) pathname underlying a VFS file.

this is useful for passing paths to external libraries.

Implemented in VFS.

virtual Status IVFS::GetVirtualPath ( const OsPath realPathname,
VfsPath pathname 
)
pure virtual

retrieve the VFS pathname that corresponds to a real file.

this is useful for reacting to file change notifications.

the current implementation requires time proportional to the number of directories; this could be accelerated by only checking directories below a mount point with a matching real path.

Implemented in VFS.

virtual Status IVFS::LoadFile ( const VfsPath pathname,
shared_ptr< u8 > &  fileContents,
size_t &  size 
)
pure virtual

Read an entire file into memory.

Parameters
pathname
fileContentsreceives a smart pointer to the contents. CAVEAT: this will be taken from the file cache if the VFS was created with cacheSize != 0 and size < cacheSize. There is no provision for Copy-on-Write, which means that such buffers must not be modified (this is enforced via mprotect).
sizereceives the size [bytes] of the file contents.
Returns
Status.

Implemented in VFS.

virtual Status IVFS::Mount ( const VfsPath mountPoint,
const OsPath path,
size_t  flags = 0,
size_t  priority = 0 
)
pure virtual

mount a directory into the VFS.

Parameters
mountPoint(will be created if it does not already exist)
pathreal directory path
flags
priority
Returns
Status.

if files are encountered that already exist in the VFS (sub)directories, the most recent / highest priority/precedence version is preferred.

if files with archive extensions are seen, their contents are added as well.

Implemented in VFS.

virtual Status IVFS::RemoveFile ( const VfsPath pathname)
pure virtual

remove file from the virtual directory listing and evict its data from the cache.

Implemented in VFS.

virtual Status IVFS::ReplaceFile ( const VfsPath pathname,
const shared_ptr< u8 > &  fileContents,
size_t  size 
)
pure virtual

Replace a file with the given contents.

See also
CreateFile

Used to replace a file if it is already present (even if the file is not in the attached vfs directory). Calls CreateFile if the file doesn't yet exist.

Implemented in VFS.

virtual Status IVFS::RepopulateDirectory ( const VfsPath path)
pure virtual

request the directory be re-populated when it is next accessed.

useful for synchronizing with the underlying filesystem after files have been created or their metadata changed.

Implemented in VFS.

virtual std::wstring IVFS::TextRepresentation ( ) const
pure virtual
Returns
a string representation of all files and directories.

Implemented in VFS.


The documentation for this struct was generated from the following file: