Skip to content

Commit 09c6986

Browse files
committed
Use new overload for Sophon install method
1 parent f41c2d5 commit 09c6986

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

CollapseLauncher/Classes/Helper/FileUtility.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,5 +111,19 @@ public static bool RenameFileWithPrefix(string filePath, string prefix = "-old",
111111
}
112112
return false;
113113
}
114+
115+
public static int GetFileStreamBufferSize(this long fileSize)
116+
=> fileSize switch
117+
{
118+
// 128 KiB
119+
<= 128 << 10 => 4 << 10,
120+
// 1 MiB
121+
<= 1 << 20 => 64 << 10,
122+
// 32 MiB
123+
<= 32 << 20 => 128 << 10,
124+
// 100 MiB
125+
<= 100 << 20 => 512 << 10,
126+
_ => 1 << 20
127+
};
114128
}
115129
}

CollapseLauncher/Classes/InstallManagement/Base/InstallManagerBase.Sophon.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,13 @@ private ValueTask RunSophonAssetDownloadThread(HttpClient client,
959959
FileInfo existingFileInfo = new FileInfo(filePath).EnsureNoReadOnly();
960960

961961
return asset.WriteToStreamAsync(client,
962-
() => existingFileInfo.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite),
962+
assetSize => existingFileInfo.Open(new FileStreamOptions
963+
{
964+
Mode = FileMode.OpenOrCreate,
965+
Access = FileAccess.ReadWrite,
966+
Share = FileShare.ReadWrite,
967+
BufferSize = assetSize.GetFileStreamBufferSize()
968+
}),
963969
parallelOptions,
964970
UpdateSophonFileTotalProgress,
965971
UpdateSophonFileDownloadProgress,
@@ -1001,10 +1007,12 @@ private ValueTask RunSophonAssetUpdateThread(HttpClient client,
10011007
sophonFileInfo.Delete();
10021008
}
10031009

1004-
return asset.WriteToStreamAsync(
1005-
client,
1006-
() => new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite,
1007-
FileShare.ReadWrite),
1010+
return asset.WriteToStreamAsync(client,
1011+
assetSize => new FileStream(filePath,
1012+
FileMode.OpenOrCreate,
1013+
FileAccess.ReadWrite,
1014+
FileShare.ReadWrite,
1015+
assetSize.GetFileStreamBufferSize()),
10081016
parallelOptions,
10091017
UpdateSophonFileTotalProgress,
10101018
UpdateSophonFileDownloadProgress,

0 commit comments

Comments
 (0)