Provides read/write access to a file system.
FsModel#getMountPoint() of the
#getModel()addresses the file system accessed by this controller.
Where the methods of this abstract class accept a
FsNodeName as a parameter, this MUST get
resolved against the
FsModel#getMountPoint() URI of this
controller's file system model.
As of TrueVFS 0.10, application level transactions are not supported,
that is, multiple file system operations cannot get composed into a single
application level transaction - support for this feature may be added in a
However, individual file system operations do come with assertions about
their atomicity, consistency, isolation and durability.
Each method of this interface which is expected to access the file system
(rather than just memory) is annotated with an
The annotation is
Inherited, so the assertion forms part of the
contract which any implementation of this interface should comply to.
Note that file system controllers are generally allowed to buffer any
changes made to their file system.
This is generally true for file system controllers which operate on archive
This means that all changes made to the file system via this interface may
not be entirely durable until they get committed by calling
The annotations account for this stipulation by leaving the
FsAssertion#durable() property undefined.
An implementation which wants to buffer its changes until
called needs to notify the
FsModel#setMounted on the controller's
file system model before the first change is commenced.
sync gets called, the controller needs to notify the
file system manager by calling
setMounted(false) on the controller's
file system model if and only if the
sync has been successfully
This protocol enables proper management of the controller's life cycle.
Implementations should be safe for multi-threaded access.