LibHac/tests/LibHac.Tests/Fs/FileSystemClientTests/FileSystemServerFactory.cs

62 lines
2 KiB
C#
Raw Normal View History

2020-10-05 21:25:39 +02:00
using LibHac.Common.Keys;
using LibHac.Fs;
using LibHac.Fs.Fsa;
2020-08-07 20:45:11 +02:00
using LibHac.FsSrv;
using LibHac.FsSystem;
using LibHac.Tools.Fs;
2021-11-14 20:08:57 +01:00
namespace LibHac.Tests.Fs.FileSystemClientTests;
public static class FileSystemServerFactory
{
2021-11-14 20:08:57 +01:00
private static Horizon CreateHorizonImpl(bool sdCardInserted, out IFileSystem rootFs)
{
2021-11-14 20:08:57 +01:00
rootFs = new InMemoryFileSystem();
var keySet = new KeySet();
2021-11-14 20:08:57 +01:00
var horizon = new Horizon(new HorizonConfiguration());
2021-11-14 20:08:57 +01:00
HorizonClient fsServerClient = horizon.CreatePrivilegedHorizonClient();
var fsServer = new FileSystemServer(fsServerClient);
var random = new Random(12345);
RandomDataGenerator randomGenerator = buffer => random.NextBytes(buffer);
var defaultObjects = DefaultFsServerObjects.GetDefaultEmulatedCreators(rootFs, keySet, fsServer, randomGenerator);
2021-11-14 20:08:57 +01:00
defaultObjects.SdCard.SetSdCardInsertionStatus(sdCardInserted);
2021-11-14 20:08:57 +01:00
var config = new FileSystemServerConfig();
config.FsCreators = defaultObjects.FsCreators;
config.DeviceOperator = defaultObjects.DeviceOperator;
config.ExternalKeySet = new ExternalKeySet();
config.RandomGenerator = randomGenerator;
2021-11-14 20:08:57 +01:00
FileSystemServerInitializer.InitializeWithConfig(fsServerClient, fsServer, config);
return horizon;
}
2021-11-14 20:08:57 +01:00
private static FileSystemClient CreateClientImpl(bool sdCardInserted, out IFileSystem rootFs)
{
Horizon horizon = CreateHorizonImpl(sdCardInserted, out rootFs);
2021-11-14 20:08:57 +01:00
HorizonClient horizonClient = horizon.CreatePrivilegedHorizonClient();
2021-11-14 20:08:57 +01:00
return horizonClient.Fs;
}
2021-11-14 20:08:57 +01:00
public static FileSystemClient CreateClient(bool sdCardInserted)
{
return CreateClientImpl(sdCardInserted, out _);
}
2020-04-03 06:57:08 +02:00
2021-11-14 20:08:57 +01:00
public static FileSystemClient CreateClient(out IFileSystem rootFs)
{
return CreateClientImpl(false, out rootFs);
}
2021-11-14 20:08:57 +01:00
public static Horizon CreateHorizonServer()
{
return CreateHorizonImpl(true, out _);
}
}