mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
BSAReader non-async factory offered
This commit is contained in:
parent
6b2d762e70
commit
6021716d9d
@ -19,7 +19,7 @@ namespace Compression.BSA
|
||||
if (fourcc == TES3Reader.TES3_MAGIC)
|
||||
return await TES3Reader.Load(filename);
|
||||
if (fourcc == "BSA\0")
|
||||
return await BSAReader.Load(filename);
|
||||
return await BSAReader.LoadWithRetry(filename);
|
||||
if (fourcc == "BTDX")
|
||||
return await BA2Reader.Load(filename);
|
||||
throw new InvalidDataException("Filename is not a .bsa or .ba2, magic " + fourcc);
|
||||
|
@ -79,13 +79,23 @@ namespace Compression.BSA
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static async ValueTask<BSAReader> Load(AbsolutePath filename)
|
||||
public static async ValueTask<BSAReader> LoadWithRetry(AbsolutePath filename)
|
||||
{
|
||||
using var stream = await filename.OpenRead();
|
||||
using var br = new BinaryReader(stream);
|
||||
var bsa = new BSAReader {_rdr = br, _stream = stream, _fileName = filename};
|
||||
await bsa.LoadHeaders();
|
||||
var bsa = new BSAReader { _rdr = br, _stream = stream, _fileName = filename };
|
||||
bsa.LoadHeaders();
|
||||
bsa._rdr = null;
|
||||
bsa._stream = null;
|
||||
return bsa;
|
||||
}
|
||||
|
||||
public static BSAReader Load(AbsolutePath filename)
|
||||
{
|
||||
using var stream = File.Open(filename.ToString(), FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
using var br = new BinaryReader(stream);
|
||||
var bsa = new BSAReader { _rdr = br, _stream = stream, _fileName = filename };
|
||||
bsa.LoadHeaders();
|
||||
bsa._rdr = null;
|
||||
bsa._stream = null;
|
||||
return bsa;
|
||||
@ -127,7 +137,7 @@ namespace Compression.BSA
|
||||
}
|
||||
}
|
||||
|
||||
private async ValueTask LoadHeaders()
|
||||
private void LoadHeaders()
|
||||
{
|
||||
var fourcc = Encoding.ASCII.GetString(_rdr.ReadBytes(4));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user