예제 #1
0
        internal void EnableFileSystemAccessorAccessLog(U8Span mountName)
        {
            if (MountTable.Find(mountName.ToString(), out FileSystemAccessor accessor).IsFailure())
            {
                throw new LibHacException("abort");
            }

            accessor.IsAccessLogEnabled = true;
        }
예제 #2
0
        internal bool IsEnabledFileSystemAccessorAccessLog(string mountName)
        {
            if (MountTable.Find(mountName, out FileSystemAccessor accessor).IsFailure())
            {
                return(true);
            }

            return(accessor.IsAccessLogEnabled);
        }
예제 #3
0
        public void Unmount(string mountName)
        {
            MountTable.Find(mountName, out FileSystemAccessor fileSystem).ThrowIfFailure();

            if (IsEnabledAccessLog() && fileSystem.IsAccessLogEnabled)
            {
                TimeSpan startTime = Time.GetCurrent();
                MountTable.Unmount(mountName);
                TimeSpan endTime = Time.GetCurrent();

                OutputAccessLog(startTime, endTime, $", name: \"{mountName}\"");
            }
            else
            {
                MountTable.Unmount(mountName);
            }
        }
예제 #4
0
        internal Result FindFileSystem(ReadOnlySpan <char> path, out FileSystemAccessor fileSystem, out ReadOnlySpan <char> subPath)
        {
            fileSystem = default;

            Result result = GetMountName(path, out ReadOnlySpan <char> mountName, out subPath);

            if (result.IsFailure())
            {
                return(result);
            }

            result = MountTable.Find(mountName.ToString(), out fileSystem);
            if (result.IsFailure())
            {
                return(result);
            }

            return(Result.Success);
        }
예제 #5
0
        public Result Commit(U8Span mountName)
        {
            Result rc = MountTable.Find(mountName.ToString(), out FileSystemAccessor fileSystem);

            if (rc.IsFailure())
            {
                return(rc);
            }

            if (IsEnabledAccessLog() && fileSystem.IsAccessLogEnabled)
            {
                TimeSpan startTime = Time.GetCurrent();
                rc = fileSystem.Commit();
                TimeSpan endTime = Time.GetCurrent();

                OutputAccessLog(rc, startTime, endTime, $", name: \"{mountName.ToString()}\"");
            }
            else
            {
                rc = fileSystem.Commit();
            }

            return(rc);
        }