1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-10 08:43:27 +08:00

Work in progress

This commit is contained in:
2023-07-11 21:58:58 +08:00
parent bf6808f565
commit cb88f268f6
11 changed files with 209 additions and 75 deletions

View File

@@ -20,7 +20,7 @@ public class CompressionStream : Stream
// only use for game statistics
public override long Position { get => BufferWriter.WriteSum; set => new NotImplementedException(); }
readonly Stream outStream;
public readonly Stream outStream;
long totalWrite = 0;
bool useMultiThread;
@@ -62,7 +62,7 @@ public class CompressionStream : Stream
{
return new CompressBuffer
{
outBuffer = new byte[wrapper.CompressBufferBound(ExBufferSize) + 1],
outBuffer = new byte[wrapper.CompressBufferBound(ExBufferSize)],
readBuffer = new byte[ExBufferSize],
writeBuffer = new byte[ExBufferSize],
};
@@ -74,19 +74,18 @@ public class CompressionStream : Stream
return new CompressBuffer();
}
public BufferWriter BufferWriter => bfferWriter;
BufferWriter bfferWriter;
public BufferWriter BufferWriter { get; private set; }
public CompressionStream(WrapperDefines wrap, int compressionLevel, Stream outStream, CompressBuffer compressBuffer, bool useMultiThread)
public CompressionStream(WrapperDefines wrap, int compressionLevel, Stream outputStream, CompressBuffer compressBuffer, bool multiThread)
{
this.wrapper = wrap;
this.outStream = outStream;
wrapper = wrap;
outStream = outputStream;
InitBuffer(compressBuffer.readBuffer, compressBuffer.writeBuffer, compressBuffer.outBuffer);
long writeSize = wrapper.CompressBegin(out cctx, compressionLevel, outBuffer, outBuffer.Length);
HandleError(writeSize);
outStream.Write(outBuffer, 0, (int)writeSize);
this.useMultiThread = useMultiThread;
if(useMultiThread)
outputStream.Write(outBuffer, 0, (int)writeSize);
useMultiThread = multiThread;
if(multiThread)
{
stopWorker = false;
compressThread = new Thread(() => CompressAsync());
@@ -98,7 +97,7 @@ public class CompressionStream : Stream
{
doubleBuffer = new DoubleBuffer(readBuffer ?? new byte[4 * MB], writeBuffer ?? new byte[4 * MB], Compress);
this.outBuffer = outBuffer ?? new byte[wrapper.CompressBufferBound(writeBuffer.Length)];
bfferWriter = new BufferWriter(doubleBuffer,this);
BufferWriter = new BufferWriter(doubleBuffer,this);
}
public override void Flush()