diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2023-09-27 14:21:26 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-27 19:21:26 +0200 |
| commit | 01c2b8097c2d66839105470d82405a12d57d196f (patch) | |
| tree | 466e1a04138bd14ba31a6a0738a46065b6033129 /src/Ryujinx.Horizon/Sdk/Fs | |
| parent | 4bd2ca3f0de37c53b3ecc78789a0a8296668235a (diff) | |
Implement NGC service (#5681)
* Implement NGC service
* Use raw byte arrays instead of string for _wordSeparators
* Silence IDE0230 for _wordSeparators
* Try to silence warning about _rangeValuesCount not being read on SparseSet
* Make AcType enum private
* Add abstract methods and one TODO that I forgot
* PR feedback
* More PR feedback
* More PR feedback
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Fs')
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/Fs/FileHandle.cs | 13 | ||||
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/Fs/FsResult.cs | 13 | ||||
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/Fs/IFsClient.cs | 16 | ||||
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/Fs/OpenMode.cs | 14 |
4 files changed, 56 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Fs/FileHandle.cs b/src/Ryujinx.Horizon/Sdk/Fs/FileHandle.cs new file mode 100644 index 00000000..1993577d --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/Fs/FileHandle.cs @@ -0,0 +1,13 @@ + +namespace Ryujinx.Horizon.Sdk.Fs +{ + public readonly struct FileHandle + { + public object Value { get; } + + public FileHandle(object value) + { + Value = value; + } + } +} diff --git a/src/Ryujinx.Horizon/Sdk/Fs/FsResult.cs b/src/Ryujinx.Horizon/Sdk/Fs/FsResult.cs new file mode 100644 index 00000000..a4b70bd5 --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/Fs/FsResult.cs @@ -0,0 +1,13 @@ +using Ryujinx.Horizon.Common; + +namespace Ryujinx.Horizon.Sdk.Fs +{ + static class FsResult + { + private const int ModuleId = 2; + + public static Result PathNotFound => new(ModuleId, 1); + public static Result PathAlreadyExists => new(ModuleId, 2); + public static Result TargetNotFound => new(ModuleId, 1002); + } +} diff --git a/src/Ryujinx.Horizon/Sdk/Fs/IFsClient.cs b/src/Ryujinx.Horizon/Sdk/Fs/IFsClient.cs new file mode 100644 index 00000000..caf6b03e --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/Fs/IFsClient.cs @@ -0,0 +1,16 @@ +using Ryujinx.Horizon.Common; +using System; + +namespace Ryujinx.Horizon.Sdk.Fs +{ + public interface IFsClient + { + Result QueryMountSystemDataCacheSize(out long size, ulong dataId); + Result MountSystemData(string mountName, ulong dataId); + Result OpenFile(out FileHandle handle, string path, OpenMode openMode); + Result ReadFile(FileHandle handle, long offset, Span<byte> destination); + Result GetFileSize(out long size, FileHandle handle); + void CloseFile(FileHandle handle); + void Unmount(string mountName); + } +} diff --git a/src/Ryujinx.Horizon/Sdk/Fs/OpenMode.cs b/src/Ryujinx.Horizon/Sdk/Fs/OpenMode.cs new file mode 100644 index 00000000..add2ca48 --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/Fs/OpenMode.cs @@ -0,0 +1,14 @@ +using System; + +namespace Ryujinx.Horizon.Sdk.Fs +{ + [Flags] + public enum OpenMode + { + Read = 1, + Write = 2, + AllowAppend = 4, + ReadWrite = 3, + All = 7, + } +} |
