namespace MoonlightServers.Daemon.ServerSystem.Interfaces; public interface IFileSystem : IServerComponent { /// /// Gets the path of the file system on the host operating system to be reused by other components /// /// Path to the file systems storage location public Task GetPathAsync(); /// /// Checks if the file system exists /// /// True if it does exist. False if it doesn't exist public Task CheckExistsAsync(); /// /// Checks if the file system is mounted /// /// True if its mounted, False if it is not mounted public Task CheckMountedAsync(); /// /// Creates the file system. E.g. Creating a virtual disk, formatting it /// /// public Task CreateAsync(); /// /// Performs checks and optimisations on the file system. /// E.g. checking for corrupted files, resizing a virtual disk or adjusting file permissions /// Requires to be called before or the file system to be in a mounted state /// /// public Task PerformChecksAsync(); /// /// Mounts the file system /// /// public Task MountAsync(); /// /// Unmounts the file system /// /// public Task UnmountAsync(); /// /// Destroys the file system and its contents /// /// public Task DestroyAsync(); }