aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Fs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-09-27 14:21:26 -0300
committerGitHub <noreply@github.com>2023-09-27 19:21:26 +0200
commit01c2b8097c2d66839105470d82405a12d57d196f (patch)
tree466e1a04138bd14ba31a6a0738a46065b6033129 /src/Ryujinx.Horizon/Sdk/Fs
parent4bd2ca3f0de37c53b3ecc78789a0a8296668235a (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.cs13
-rw-r--r--src/Ryujinx.Horizon/Sdk/Fs/FsResult.cs13
-rw-r--r--src/Ryujinx.Horizon/Sdk/Fs/IFsClient.cs16
-rw-r--r--src/Ryujinx.Horizon/Sdk/Fs/OpenMode.cs14
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,
+ }
+}