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();
}